iT邦幫忙

2022 iThome 鐵人賽

DAY 17
1
自我挑戰組

Bug仔的筆記本系列 第 17

SQL 語法 With As

  • 分享至 

  • xImage
  •  

SQL 語法 With As 前幾天在維護專案的時候,看到有使用 With As 的語法,覺得很特別,今天紀錄一下

CTE (Common Table Expressions) 通用資料表運算式

我們程式要從資料庫撈出來的資料,可能不是直接從某張 Table 出來的。例如需要過濾條件、或是預處理過才是我們要的資料。你可能會想使用暫存資料表,不過今天你可以用試用 Common Table Expressions (通用資料表運算式),把資料做預先處理,再從裡面進行查詢。

在 SQL Server 中語法是

with 名稱 as
(
    select .....
)
select * From 名稱

With 一定是你下的SQL語法開頭,而 With as ()的括號後面一定要馬上接 Selcet

範例

1.基本用法

  With MyData as (
  Select [ProductName],[UnitPrice]
	  From [Products] 
	  Where ProductID > 10  
  )
  Select * From MyData 
  where [UnitPrice] >10
  Order by UnitPrice

https://ithelp.ithome.com.tw/upload/images/20221002/20120420C3grB7btDP.png

  1. 更改輸出欄位名稱
With MyData(產品名稱,價格) as (
Select [ProductName],[UnitPrice]
  From [Products] 
  Where ProductID > 10  
)
Select * From MyData 
where 價格 >10
Order by 價格

https://ithelp.ithome.com.tw/upload/images/20221002/201204208I7r5xLivj.png
3. with 多組 CTE

With 
  小於五元 as (
	Select [ProductName],[UnitPrice]
	  From [Products] 
	  Where [UnitPrice] < 5  
  ),
  大於二十元 as (
	Select [ProductName],[UnitPrice]
	  From [Products] 
	  Where [UnitPrice] > 20  
  )

Select * From 小於五元 
UNION ALL
Select * From 大於二十元 
Order by UnitPrice

https://ithelp.ithome.com.tw/upload/images/20221002/20120420JHSuZoYUe0.png
參考資料
https://learn.microsoft.com/zh-tw/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-ver16
https://dotblogs.com.tw/dc690216/2010/02/02/13440


上一篇
使用 Mock(moq) 隔離單元測試
下一篇
SQL Server 的 #Table 與 ##Table 暫存表
系列文
Bug仔的筆記本30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言